Computer-based imaging system have become popular for producing both electronic and hard copy images due in part to the proliferation and availability of desktop publishing programs. In such systems, a host computer typically generates data which describes the image and then transfers the data to an image generating device where it is converted into a format that can be used by the device. Commonly, the image data is in the format of a page description language (PDL), such as, for example, PostScript available from Adobe.
Page description language, i.e., PostScript, compatible desktop publishing and other image producing application programs generate graphic commands which are converted into page description language commands. An imaging device, such as, for example, a printer or display device interprets the page description language commands so that the proper type and sequence of graphics operations can be performed to generate or render the images created in the desktop publishing program. The graphics operations typically include text, graphics, and pictorial (bitmap) operations that are performed on image objects in response to imaging operators imbedded in the page description language.
For each image object, the interpretation process in the imaging device further typically also includes a step of determining the proper set of graphic state arguments, such as color, font, size, and the like, that are to be applied to each image object in order to properly render same. Using this information, pixel display values are created and stored in a frame buffer to represent the colors and shapes of the image objects. A print engine in the imaging device forms the image based directly on the pixel display values stored in the frame buffer. The process within the imaging device of converting the image data received from the host computer into the pixel display values arranged in the frame buffer for ready use by a print engine or display hardware is commonly known in the art as "rendering" an image.
Within the above framework, it is well known in the digital imaging art to use a single collection of parameters to control the production of text, images, graphics, and combinations thereof on a raster output device. The collection of parameters in the PostScript page description environment is called the "Current Graphics State." For convenience in connection with describing the present invention the expression "current graphics state" will be used to describe a data structure holding parameters used to define the global framework in which the graphics operators execute, It is not meant, however, to imply that the invention is limited to the PostScript environment or that it is preferred to use the invention on a PostScript machine.
In practice, the imager continuously references the current graphics state set to render images based on the information generated by the page description language interpreter as it executes normal sources of program text, such as, for example, standard PostScript input files. The page description language interpreter is sometimes located in the host computer but is typically located in the embedded printer. When the imaging operators used to render the image on a page or screen are of homogenous object type, i.e., all graphics object types, all text object types, or all image (bitmap) object types, there is no need to modify the contents of the current graphics state, thereby realizing efficient image data processing. However, current sophisticated desktop publishing systems allow the user to combine different types of image objects into a single composite document. For example, a user can combine photographic images, text, and business graphics (charts) into a single document wherein these images may be either color, black/white, or contain components of both as well.
To achieve satisfactory results, each of these objects needs to be processed differently so that a high quality document can be produced. More particularly with regard to the imaging device, the parameters contained in the current graphics state must be adjusted each time there is a change between image object types so that the proper pixel display values are arranged in the frame buffer. In that way, photographic objects can be processed using a first set of current graphics state parameters, while business graphics, text, etc. may be processed another way using different sets of current graphics state parameters. The current graphics state is switched within a single document. However, the changeover between graphics state parameter sets is a cumbersome and time-consuming process.
To resolve this problem, object oriented rendering systems have been developed. In these systems, the objects which make up a composite document are rendered or processed uniquely. In certain imaging systems, such as, for example, the Xerox Intelligent Color System, object oriented imaging is implemented in the PostScript page description language environment using a technique known as operator overloading. In operator overloading, the particular imaging operators, such as, for example, show (text), fill or stroke (graphics), and image (pictorial) are overloaded or overwritten so that if the parameters contained in the present current graphics state are incorrect or inappropriate for rendering certain objects, they are modified before executing the actual painting operator.
Although the above-described operator overloading technique uniquely renders each object making up a composite document to achieve satisfactory image results, the processing required to recalculate the parameters in the current graphics state and, in addition, the time required for operator overloading in the current graphics state storage results in a significant negative performance impact. This is especially true when text and graphics are handled differently in the imaging device. In addition, the negative performance impact becomes more pronounced when a composite document contains a significant amount of mixed text and graphics objects.
Therefore, it is desirable to provide an object oriented processing and rendering system which allows for quick switching between parameters in the current graphics state without the need to repeatedly recalculate the parameters for efficient rendering and processing of composite-type documents. Moreover, it is desirable to provide an object oriented processing and rendering system that optimizes the switching of parameters in the current graphics state by using a set of pointers to a plurality of rendering states stored beforehand in the imaging device so that they are ready immediately during image rendering.
Further, it is desirable to provide a plurality of pointers into a rendering state array containing a plurality of rendering states so that the switching of parameters in the current graphics state requires only that a pointer buffer be loaded with a value indexing a selected one of a set of rendering states from within the rendering state array. In that way it becomes unnecessary to reconfigure the graphics state.
In other words, it is desirable to provide a processing and rendering system which allows for efficient switching between rendering states without undesirable parameter switching and operator overloading burden. Furthermore, it is desirable to provide a processing and rendering system of the type described which is capable of switching between rendering states based upon imaging object types in composite documents, the imaging object types being inferred from imaging operators contained in a page description language.